#ifndef MULTILAYOUTWDGET_H
#define MULTILAYOUTWDGET_H

#include <QFrame>
#include <QEvent>
#include <memory>

class MultiLayoutWidgetPrivate;
class MultiLayoutWidget : public QFrame
{
    Q_OBJECT
public:
    explicit MultiLayoutWidget(QWidget *parent = nullptr);

    /**
     * @brief 主层设置布局
     */
    void setLayout(QLayout*);

    /**
     * @brief 增加一层视图
     */
    void addWidget(QWidget*);

    /**
     * @brief 插入一层视图
     */
    void insertWidget(int index, QWidget*);

    /**
     * @brief 获取视图
     */
    QWidget *widget(int index);

    /**
     * @brief 删除视图层
     */
    void removeWidget(QWidget *);
    void removeWidget(int index);

    /**
     * @brief 该层是否获取鼠标事件，默认只有最顶层获取鼠标事件
     * @attention 该功能还没实现，后续有时间再更新
     */
    void widgetSetMouseEvent(QWidget*, bool state);
    void widgetSetMouseEvent(int index, bool state);

protected:
    bool event(QEvent*) override;

private:
    std::unique_ptr<MultiLayoutWidgetPrivate> d;
};

#endif // MULTILAYOUTWDGET_H
